using System;
using System.Collections.Generic;
using System.IO;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using ShoppingCenter.Backend.Api.Params;
using ShoppingCenter.Backend.Api.Utils;

namespace ShoppingCenter.Backend.Api.Controllers
{
    //[Authorize]
    [ApiController]
    [Route("[controller]")]
    public class FilesController : ControllerBase
    {
        public static string url { get; set; }
        private readonly IConfiguration _configuration;

        public FilesController(IConfiguration configuration)
        {
            _configuration = configuration;
        }


        // //获取商品封面图
        // [HttpGet("picPath")]
        // public dynamic Get(string picUrl)
        // {
        //     if (picUrl=="null"||picUrl==null)
        //     {
        //         return "";
        //     }
        //     else
        //     {
        //         var image = System.IO.File.OpenRead(picUrl);
        //         return File(image, "image/jpeg");
        //     }
        // }

        //获取商品详情图（富文本）
        [HttpGet,Route("wangPicPath")]
        public dynamic GetWangPicPath(string wangPicUrl)
        {
            if (wangPicUrl=="null"||wangPicUrl==null)
            {
                return "";
            }
            else
            {
                var image = System.IO.File.OpenRead(wangPicUrl);
                return File(image, "image/jpeg");
            }
        }


        // /// <summary>
        // /// 文件上传接口
        // /// </summary>
        // /// <param name="model"></param>
        // /// <returns></returns>
        // [HttpPost, Route("uploadfiles")]
        // public string UploadFiles(IFormCollection model)
        // {
        //     // 获得当前应用所在的完整路径（绝对地址）
        //     var filePath = Directory.GetCurrentDirectory();

        //     // 通过配置文件获得存放文件的相对路径
        //     string path = _configuration["UploadFilesPath"];

        //     // 最终存放文件的完整路径
        //     var preFullPath = Path.Combine(filePath, path);
        //     // 如果路径不存在，则创建
        //     if (!Directory.Exists(preFullPath))
        //     {
        //         Directory.CreateDirectory(preFullPath);
        //     }

        //     var resultPath = new List<string>();
        //     foreach (IFormFile file in model.Files)
        //     {
        //         if (file.Length > 0)
        //         {
        //             var fileName = file.FileName;
        //             var extName = fileName.Substring(fileName.LastIndexOf("."));//extName包含了“.”
        //             var tempPath = Path.Combine(path, Guid.NewGuid().ToString("N") + extName);
        //             using (var stream = new FileStream(Path.Combine(filePath, tempPath), FileMode.CreateNew))//Path.Combine(_env.WebRootPath, fileName)
        //             {
        //                 file.CopyTo(stream);

        //             }

        //             // 此处地址可能带有两个反斜杠，虽然也能用，比较奇怪，统一转换成斜杠，这样在任何平台都有一样的表现
        //             resultPath.Add(tempPath.Replace("\\", "/"));
        //             url = resultPath[0];
        //         }
        //     }

        //     var res = new
        //     {
        //         Code = 1000,
        //         Data = url,
        //         Msg = "封面图上传成功"
        //     };

        //     return JsonHelper.Serialize(res);
        // }


         /// <summary>
        /// 商品详情图片上传接口（富文本）
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost, Route("uploadWangEditor")]
        public dynamic UploadWangEditor(IFormCollection model)
        {
            // 获得当前应用所在的完整路径（绝对地址）
            var filePath = Directory.GetCurrentDirectory();

            // 通过配置文件获得存放文件的相对路径
            string path = _configuration["UploadFilesPath"];

            // 最终存放文件的完整路径
            var preFullPath = Path.Combine(filePath, path);
            // 如果路径不存在，则创建
            if (!Directory.Exists(preFullPath))
            {
                Directory.CreateDirectory(preFullPath);
            }

            var wangResultPath = new List<string>();

            foreach (IFormFile file in model.Files)
            {
                if (file.Length > 0)
                {
                    var fileName = file.FileName;
                    var extName = fileName.Substring(fileName.LastIndexOf("."));//extName包含了“.”
                    var tempPath = Path.Combine(path, Guid.NewGuid().ToString("N") + extName);
                    using (var stream = new FileStream(Path.Combine(filePath, tempPath), FileMode.CreateNew))//Path.Combine(_env.WebRootPath, fileName)
                    {
                        file.CopyTo(stream);

                    }

                    // 此处地址可能带有两个反斜杠，虽然也能用，比较奇怪，统一转换成斜杠，这样在任何平台都有一样的表现
                   wangResultPath.Add(tempPath.Replace("\\", "/"));
                  
                }
            }

            List<Wang> wangs = new List<Wang>();

            wangs.Add(new Wang
            {
                Url = "http://localhost:5000/files/wangPicPath?wangPicUrl="+wangResultPath[0],
                Alt = "上传成功",
                // Href = "http://localhost:5000/files/wangPicPath?wangPicUrl="+Url
            });


            var res = new
            {
                // errno 即错误代码，0 表示没有错误。
                //如果有错误，errno != 0，可通过下文中的监听函数 fail 拿到该错误码进行自定义处理
                errno = 0,

                //data 是一个数组，返回图片Object，Object中包含需要包含url、alt和href三个属性,它们分别代表图片地址、图片文字说明和跳转链接,alt和href属性是可选的，可以不设置或设置为空字符串,需要注意的是url是一定要填的。
                data = wangs,
            };
            return res;

        }
    }
}


